//class Solution {
//public:
//    TreeNode* convert(vector<int>& inorder, vector<int>& postorder, int& index, int begin, int end)
//    {
//        TreeNode* root = nullptr;
//        if (index < 0)
//            return root;
//        root = new TreeNode(postorder[index]);
//        int mid = begin;
//        while (mid < end)
//        {
//            if (inorder[mid] != postorder[index])
//                mid++;
//            else
//                break;
//        }
//        if (mid + 1 < end)
//        {
//            root->right = convert(inorder, postorder, --index, mid + 1, end);
//        }
//        if (begin < mid)
//        {
//            root->left = convert(inorder, postorder, --index, begin, mid);
//        }
//        return root;
//    }
//    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
//        int index = inorder.size() - 1;
//        return convert(inorder, postorder, index, 0, inorder.size());
//    }
//};